/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sccpa;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 *
 * @author admin
 */
@Entity
@Table(name = "projetos", catalog = "db_projeto_araca", schema = "")
@NamedQueries({
    @NamedQuery(name = "Projetos.findAll", query = "SELECT p FROM Projetos p"),
    @NamedQuery(name = "Projetos.findByCodProjeto", query = "SELECT p FROM Projetos p WHERE p.codProjeto = :codProjeto"),
    @NamedQuery(name = "Projetos.findByCodAluno", query = "SELECT p FROM Projetos p WHERE p.codAluno = :codAluno"),
    @NamedQuery(name = "Projetos.findByCodResponsavel", query = "SELECT p FROM Projetos p WHERE p.codResponsavel = :codResponsavel"),
    @NamedQuery(name = "Projetos.findByTempoMoradia", query = "SELECT p FROM Projetos p WHERE p.tempoMoradia = :tempoMoradia"),
    @NamedQuery(name = "Projetos.findByTipoMoradia", query = "SELECT p FROM Projetos p WHERE p.tipoMoradia = :tipoMoradia"),
    @NamedQuery(name = "Projetos.findByObsTipoMoradia", query = "SELECT p FROM Projetos p WHERE p.obsTipoMoradia = :obsTipoMoradia"),
    @NamedQuery(name = "Projetos.findByValorAluguel", query = "SELECT p FROM Projetos p WHERE p.valorAluguel = :valorAluguel"),
    @NamedQuery(name = "Projetos.findByTipoConstrucao", query = "SELECT p FROM Projetos p WHERE p.tipoConstrucao = :tipoConstrucao"),
    @NamedQuery(name = "Projetos.findByObsTipoConstrucao", query = "SELECT p FROM Projetos p WHERE p.obsTipoConstrucao = :obsTipoConstrucao"),
    @NamedQuery(name = "Projetos.findByTipoCobertura", query = "SELECT p FROM Projetos p WHERE p.tipoCobertura = :tipoCobertura"),
    @NamedQuery(name = "Projetos.findByObsTipoCobertura", query = "SELECT p FROM Projetos p WHERE p.obsTipoCobertura = :obsTipoCobertura"),
    @NamedQuery(name = "Projetos.findByNumeroPavimentos", query = "SELECT p FROM Projetos p WHERE p.numeroPavimentos = :numeroPavimentos"),
    @NamedQuery(name = "Projetos.findBySaneamentoAgua", query = "SELECT p FROM Projetos p WHERE p.saneamentoAgua = :saneamentoAgua"),
    @NamedQuery(name = "Projetos.findBySaneamentoBanheiro", query = "SELECT p FROM Projetos p WHERE p.saneamentoBanheiro = :saneamentoBanheiro"),
    @NamedQuery(name = "Projetos.findByTipoEsgoto", query = "SELECT p FROM Projetos p WHERE p.tipoEsgoto = :tipoEsgoto"),
    @NamedQuery(name = "Projetos.findByTipoIluninacao", query = "SELECT p FROM Projetos p WHERE p.tipoIluninacao = :tipoIluninacao")})
public class Projetos implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "COD_PROJETO")
    private Integer codProjeto;
    @JoinColumn(name="COD_ALUNO", referencedColumnName="COD_ALUNO")
    @ManyToOne
    private Alunos codAluno;
    @JoinColumn(name="COD_RESPONSAVEL", referencedColumnName="COD_PESSOA")
    @ManyToOne
    private Pessoas codResponsavel;
    @Column(name = "TEMPO_MORADIA")
    private String tempoMoradia;
    @Basic(optional = false)
    @Column(name = "TIPO_MORADIA")
    private String tipoMoradia;
    @Column(name = "OBS_TIPO_MORADIA")
    private String obsTipoMoradia;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "VALOR_ALUGUEL")
    private Float valorAluguel;
    @Basic(optional = false)
    @Column(name = "TIPO_CONSTRUCAO")
    private String tipoConstrucao;
    @Column(name = "OBS_TIPO_CONSTRUCAO")
    private String obsTipoConstrucao;
    @Basic(optional = false)
    @Column(name = "TIPO_COBERTURA")
    private String tipoCobertura;
    @Column(name = "OBS_TIPO_COBERTURA")
    private String obsTipoCobertura;
    @Column(name = "NUMERO_PAVIMENTOS")
    private Integer numeroPavimentos;
    @Column(name = "SANEAMENTO_AGUA")
    private String saneamentoAgua;
    @Column(name = "SANEAMENTO_BANHEIRO")
    private String saneamentoBanheiro;
    @Basic(optional = false)
    @Column(name = "TIPO_ESGOTO")
    private String tipoEsgoto;
    @Basic(optional = false)
    @Column(name = "TIPO_ILUNINACAO")
    private String tipoIluninacao;
    @Lob
    @Column(name = "OBSERVACOES")
    private String observacoes;

    public Projetos() {
    }

    public Projetos(Integer codProjeto) {
        this.codProjeto = codProjeto;
    }

    public Projetos(Integer codProjeto, Alunos codAluno, Pessoas codResponsavel, String tipoMoradia, String tipoConstrucao, String tipoCobertura, String tipoEsgoto, String tipoIluninacao) {
        this.codProjeto = codProjeto;
        this.codAluno = codAluno;
        this.codResponsavel = codResponsavel;
        this.tipoMoradia = tipoMoradia;
        this.tipoConstrucao = tipoConstrucao;
        this.tipoCobertura = tipoCobertura;
        this.tipoEsgoto = tipoEsgoto;
        this.tipoIluninacao = tipoIluninacao;
    }

    public Integer getCodProjeto() {
        return codProjeto;
    }

    public void setCodProjeto(Integer codProjeto) {
        Integer oldCodProjeto = this.codProjeto;
        this.codProjeto = codProjeto;
        changeSupport.firePropertyChange("codProjeto", oldCodProjeto, codProjeto);
    }

    public Alunos getCodAluno() {
        return codAluno;
    }

    public void setCodAluno(Alunos codAluno) {
        Alunos oldCodAluno = this.codAluno;
        this.codAluno = codAluno;
        changeSupport.firePropertyChange("codAluno", oldCodAluno, codAluno);
    }

    public Pessoas getCodResponsavel() {
        return codResponsavel;
    }

    public void setCodResponsavel(Pessoas codResponsavel) {
       Pessoas  oldCodResponsavel = this.codResponsavel;
        this.codResponsavel = codResponsavel;
        changeSupport.firePropertyChange("codResponsavel", oldCodResponsavel, codResponsavel);
    }

    public String getTempoMoradia() {
        return tempoMoradia;
    }

    public void setTempoMoradia(String tempoMoradia) {
        String oldTempoMoradia = this.tempoMoradia;
        this.tempoMoradia = tempoMoradia;
        changeSupport.firePropertyChange("tempoMoradia", oldTempoMoradia, tempoMoradia);
    }

    public String getTipoMoradia() {
        return tipoMoradia;
    }

    public void setTipoMoradia(String tipoMoradia) {
        String oldTipoMoradia = this.tipoMoradia;
        this.tipoMoradia = tipoMoradia;
        changeSupport.firePropertyChange("tipoMoradia", oldTipoMoradia, tipoMoradia);
    }

    public String getObsTipoMoradia() {
        return obsTipoMoradia;
    }

    public void setObsTipoMoradia(String obsTipoMoradia) {
        String oldObsTipoMoradia = this.obsTipoMoradia;
        this.obsTipoMoradia = obsTipoMoradia;
        changeSupport.firePropertyChange("obsTipoMoradia", oldObsTipoMoradia, obsTipoMoradia);
    }

    public Float getValorAluguel() {
        return valorAluguel;
    }

    public void setValorAluguel(Float valorAluguel) {
        Float oldValorAluguel = this.valorAluguel;
        this.valorAluguel = valorAluguel;
        changeSupport.firePropertyChange("valorAluguel", oldValorAluguel, valorAluguel);
    }

    public String getTipoConstrucao() {
        return tipoConstrucao;
    }

    public void setTipoConstrucao(String tipoConstrucao) {
        String oldTipoConstrucao = this.tipoConstrucao;
        this.tipoConstrucao = tipoConstrucao;
        changeSupport.firePropertyChange("tipoConstrucao", oldTipoConstrucao, tipoConstrucao);
    }

    public String getObsTipoConstrucao() {
        return obsTipoConstrucao;
    }

    public void setObsTipoConstrucao(String obsTipoConstrucao) {
        String oldObsTipoConstrucao = this.obsTipoConstrucao;
        this.obsTipoConstrucao = obsTipoConstrucao;
        changeSupport.firePropertyChange("obsTipoConstrucao", oldObsTipoConstrucao, obsTipoConstrucao);
    }

    public String getTipoCobertura() {
        return tipoCobertura;
    }

    public void setTipoCobertura(String tipoCobertura) {
        String oldTipoCobertura = this.tipoCobertura;
        this.tipoCobertura = tipoCobertura;
        changeSupport.firePropertyChange("tipoCobertura", oldTipoCobertura, tipoCobertura);
    }

    public String getObsTipoCobertura() {
        return obsTipoCobertura;
    }

    public void setObsTipoCobertura(String obsTipoCobertura) {
        String oldObsTipoCobertura = this.obsTipoCobertura;
        this.obsTipoCobertura = obsTipoCobertura;
        changeSupport.firePropertyChange("obsTipoCobertura", oldObsTipoCobertura, obsTipoCobertura);
    }

    public Integer getNumeroPavimentos() {
        return numeroPavimentos;
    }

    public void setNumeroPavimentos(Integer numeroPavimentos) {
        Integer oldNumeroPavimentos = this.numeroPavimentos;
        this.numeroPavimentos = numeroPavimentos;
        changeSupport.firePropertyChange("numeroPavimentos", oldNumeroPavimentos, numeroPavimentos);
    }

    public String getSaneamentoAgua() {
        return saneamentoAgua;
    }

    public void setSaneamentoAgua(String saneamentoAgua) {
        String oldSaneamentoAgua = this.saneamentoAgua;
        this.saneamentoAgua = saneamentoAgua;
        changeSupport.firePropertyChange("saneamentoAgua", oldSaneamentoAgua, saneamentoAgua);
    }

    public String getSaneamentoBanheiro() {
        return saneamentoBanheiro;
    }

    public void setSaneamentoBanheiro(String saneamentoBanheiro) {
        String oldSaneamentoBanheiro = this.saneamentoBanheiro;
        this.saneamentoBanheiro = saneamentoBanheiro;
        changeSupport.firePropertyChange("saneamentoBanheiro", oldSaneamentoBanheiro, saneamentoBanheiro);
    }

    public String getTipoEsgoto() {
        return tipoEsgoto;
    }

    public void setTipoEsgoto(String tipoEsgoto) {
        String oldTipoEsgoto = this.tipoEsgoto;
        this.tipoEsgoto = tipoEsgoto;
        changeSupport.firePropertyChange("tipoEsgoto", oldTipoEsgoto, tipoEsgoto);
    }

    public String getTipoIluninacao() {
        return tipoIluninacao;
    }

    public void setTipoIluninacao(String tipoIluninacao) {
        String oldTipoIluninacao = this.tipoIluninacao;
        this.tipoIluninacao = tipoIluninacao;
        changeSupport.firePropertyChange("tipoIluninacao", oldTipoIluninacao, tipoIluninacao);
    }

    public String getObservacoes() {
        return observacoes;
    }

    public void setObservacoes(String observacoes) {
        String oldObservacoes = this.observacoes;
        this.observacoes = observacoes;
        changeSupport.firePropertyChange("observacoes", oldObservacoes, observacoes);
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codProjeto != null ? codProjeto.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Projetos)) {
            return false;
        }
        Projetos other = (Projetos) object;
        if ((this.codProjeto == null && other.codProjeto != null) || (this.codProjeto != null && !this.codProjeto.equals(other.codProjeto))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "sccpa.Projetos[ codProjeto=" + codProjeto + " ]";
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }
    
}
